package net.feixiang.creational.singleton.lazy;

/**
 * 懒汉式单例类（线程安全）。特点：延迟初始化（在第一次使用时创建实例）。
 *
 * @see <a href="https://www.feixiang.net/Java%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/%E7%AC%AC%E4%B8%80%E7%AB%A0%E3%80%81%E5%88%9B%E5%BB%BA%E5%9E%8B%E6%A8%A1%E5%BC%8F/11.html">单例模式</a>
 * @author 飞翔
 */
public class LazySingleton2 {
    // 静态变量用于保存唯一实例（未直接初始化）
    private static LazySingleton2 instance;

    /**
     * 私有构造函数
     * 作用：阻止外部通过 new 关键字直接创建实例
     */
    private LazySingleton2() {}

    /**
     * 获取单例实例的全局访问点（线程安全版本）
     * @return 单例实例
     */
    public static synchronized LazySingleton2 getInstance() {
        // 使用时才检查实例是否已创建，未创建则创建实例再返回
        if (instance == null) {
            instance = new LazySingleton2();
        }
        return instance;
    }

    /**
     * 示例业务方法
     */
    public void doSomething() {
        System.out.println("懒汉式（线程安全）单例模式：你好，飞翔！");
    }
}
